import axios from 'axios'

// 01: 创建axios 实例
const request = axios.create({
  baseURL: 'https://reactapi.iynn.cn',
  timeout: 5000,
  headers: { 'Content-Type': 'application/json' }
})

//02: 配置请求拦截器
request.interceptors.request.use(
  function (config) {
    if (localStorage.getItem('loginInfo')) {
      // 如果有数据将 token 放入请求头中
      config.headers.Authorization = JSON.parse(localStorage.getItem('loginInfo') as string).token
    }
    // 在发送请求之前做些什么
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 03: 配置响应拦截器
request.interceptors.response.use(
  function (response) {
    if (response.data.message) {
      ElMessage({
        message: response.data.errText === '' ? '成功' : response.data.errText, // 使用后端返回的文本
        type: response.data.message === 'fail' ? 'error' : response.data.message, // 提示消息的类型 -- ElementUiPlus
        grouping: true,
        duration: 1000,
        center: true
      })
    }
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response
  },
  function (error) {
    ElMessage({
      message: '请求超时', // 使用后端返回的文本
      type: 'error', // 提示消息的类型 -- ElementUiPlus
      grouping: true,
      duration: 3000,
      center: true
    })

    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)

export default request
